package controlador;

import java.util.ArrayList;
import java.util.List;

import modelo.Cliente;
import vista.TelaChat;
import vista.TelaLogin;

public class ControladorCliente {
	
	private static ControladorCliente controladorCliente;
	private Cliente cliente;
	private TelaChat telaChat;
	private TelaLogin telaLogin;
	
	public static ControladorCliente getControladorCliente() {
		if(controladorCliente == null) controladorCliente = new ControladorCliente();
		return controladorCliente;
	}
	
	public void finalizaConexoes() {
		cliente.finalizaConexao();
	}
	
	public void enviarMensagem(List<String> receptores, String mensagem) {
		cliente.enviarMensagem(receptores, mensagem);
		telaChat.atualizaLabel(receptores, mensagem);
	}
	
	public void enviarNome(String nome) {
		boolean sucessoEnvio = cliente.enviarNome(nome);
		
		if(sucessoEnvio) {
			List<String> clientesConectados = new ArrayList<String>();
			clientesConectados.addAll(cliente.getClientes());
			
			controladorCliente.criarTelaChat(clientesConectados, cliente.getNome());
			controladorCliente.escondeTelaLogin();
			cliente.criarOuvinte();
		}
		else {
			controladorCliente.loginInvalido();
		}
	}
	
	public void escondeTelaLogin() {
		telaLogin.getJanelaPrincipal().setVisible(false);
	}
	
	public void loginInvalido() {
		telaLogin.setNomeInvalido(true);
	}
	
	public void atualizaLista(List<String > clientes) {
		telaChat.atualizaListaUsuarios(clientes);;
	}
	
	public void criarTelaLogin() {
		telaLogin = new TelaLogin();
	}
	
	
	public void criarTelaChat(List<String> listaClientes, String nome) {
		telaChat = new TelaChat(listaClientes, nome);
	}
	
	public void mensagemRecebida(List<String> membrosConversa, String mensagem) {
		telaChat.atualizaLabel(membrosConversa, mensagem);
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
}

